//
//  HMMainViewController.swift
//  新浪微博
//
//  Created by 饶鹏伟 on 16/4/6.
//  Copyright © 2016年 饶鹏伟. All rights reserved.
//

import UIKit

class HMMainViewController: UITabBarController {
    
    //如果私有的方法 想让外界访问 加@objc修饰 因为Swift是静态语言 OC是动态语言 Swift在编译之前 就指定方法的掉用者。加@objc修饰 就是告诉Swift以OC的方式编译 
    
     @objc private func plusBtnDidClick(){
        
        print("点我啦")
        
        let composeView=HMComposeView()
        
        composeView.show(self)
        
    }
    

    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        //自定义tabBar
        let mainTabBar=HMMainTabBar()
        
        //给加号按钮添加一个点击事件
        mainTabBar.plusBtn.addTarget(self, action: "plusBtnDidClick", forControlEvents: .TouchUpInside)
        
        //使用KVC 赋值
        setValue(mainTabBar, forKey: "tabBar")

        //添加子视图的控制器
        addChildViewControllers()
    
    }

   
    
    
  //添加tabar子视图的控制器 方法用private修饰  只有在 '当前文件内' 才可以访问该方法
    
    private func addChildViewControllers(){
        
       addChildViewController(HMHomeTableViewController(), title: "首页", imageName: "tabbar_home",index: 0)
       addChildViewController(HMMesageTableViewController(), title: "消息", imageName: "tabbar_message_center",index: 1)
       addChildViewController(HMDiscoverTableViewController(), title: "发现", imageName: "tabbar_discover",index: 2)
        addChildViewController(HMProfileTableViewController(), title: "我", imageName: "tabbar_profile",index: 3)
        
    }
    
    
    //方法封装 添加一个子视图的方法
    private func addChildViewController(vc: UIViewController ,title: String, imageName: String,index: Int) {
        
        //导航条的title 和tabbaritem的title显示不一样时候 可以使用这种方式
        //        vc.tabBarItem.title = title
        //        vc.navigationItem.title = title
        
        
        //自定义底部工具条的tabbaritem
        vc.tabBarItem=HMTabbarItem()
        //设置每个tabbaritem的标记
        vc.tabBarItem.tag=baseTag+index
        
        //设置导航控制器导航条的标题和tabbaritem的文字 当两个文字一样的时候用这个方法
        vc.title=title
        //设置导航控制器item的默认显示图片
        vc.tabBarItem.image=UIImage(named: imageName)
        //选中图片 使用自己设置的背景图 不使用默认选中的
        vc.tabBarItem.selectedImage=UIImage(named: imageName+"_selected")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
        //设置选中item字体的颜色
        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.orangeColor()], forState: .Selected)
        //tabBar.tintColor=UIColor.orangeColor() 这个方法可以统一把图片和文字设置为一样的颜色 默认都是蓝色
        //创建一个导航控制器 
        let nav=HMBaseNavViewController(rootViewController: vc)
        //添加到tabar控制器上
        addChildViewController(nav)
        
    }
    
    //设置选中的tabbaritem 动画改变大小
    override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
        
        var index = 0
        
        for subView in tabBar.subviews{
            
            if subView.isKindOfClass(NSClassFromString("UITabBarButton")!){
                
                if index==item.tag-baseTag{//可以定位到点击的 UITabBarButton
                  //遍历UITabBarButton子视图
                    for v in subView.subviews{
                        
                        if v.isKindOfClass(NSClassFromString("UITabBarSwappableImageView")!){
                            
                            //执行动画效果 先缩小 再放大
                            v.transform=CGAffineTransformMakeScale(0.5, 0.5)
                            
                            UIView.animateWithDuration(0.25, delay: 0, usingSpringWithDamping: 0.3, initialSpringVelocity: 2, options: [], animations: { () -> Void in
                                
                                v.transform=CGAffineTransformMakeScale(1, 1)
                                
                                
                                }, completion: { (_) -> Void in
                                    
                                    print("OK")
                            })
                            
                        }
                    
                    }
               
                }
                
               index++
            }

        }
        
    }
}
